#include "LinkStack.h"

template <typename T>
LinkStack<T>::LinkStack(void)
{
        //创建栈 相当于创建一个线性表
        //如果有一个线性表的类 那多么的好啊
        list = new LinkList<T>;
}

template <typename T>
LinkStack<T>::~LinkStack(void)
{
        clear();
        if(list){
                delete list;
                list = 0;
        }
}

template <typename T>
void LinkStack<T>::clear()
{
        //清空一个栈 相当于 清空一个链表
        return list->clear();
}

template <typename T>
int LinkStack<T>::push(T &t)
{
        //向栈中添加元素 相当于 向链表的头部插入元素
        return list->insert(t,0);
}

template <typename T>
int LinkStack<T>::pop(T &t)
{
        //从栈中弹出元素 相当于 从线性表的头部删除 元素
        return list->del(0,t);
}

template <typename T>
int LinkStack<T>::top(T &t)
{
        //从栈中获取栈顶元素 相当于 从线性表中获取0号位置元素
        return list->get(0,t);
}

template <typename T>
int LinkStack<T>::size()
{
        return list->getLen();
}
